package fr.univ.projet.ihm;

import fr.univ.projet.Joueur;
import fr.univ.projet.data.Base;
import javax.swing.JFrame;
import javax.swing.JOptionPane;
import javax.swing.JPanel;

public class PanelConnexion extends JPanel {

    private JFrame parent;

    public PanelConnexion(JFrame parent) {
        //super(parent);
        this.parent = parent;
        initComponents();
        initComboJoueur();
    }

    /**
     * This method is called from within the constructor to initialize the form.
     * WARNING: Do NOT modify this code. The content of this method is always
     * regenerated by the Form Editor.
     */
    @SuppressWarnings("unchecked")
    // <editor-fold defaultstate="collapsed" desc="Generated Code">//GEN-BEGIN:initComponents
    private void initComponents() {

        lblLogin = new javax.swing.JLabel();
        comboLogin = new javax.swing.JComboBox();
        lblPwd = new javax.swing.JLabel();
        btnConnexion = new javax.swing.JButton();
        txtPwd = new javax.swing.JPasswordField();

        lblLogin.setText("Login de connexion");

        lblPwd.setText("Mot de passe");

        btnConnexion.setText("Connexion");
        btnConnexion.addActionListener(new java.awt.event.ActionListener() {
            public void actionPerformed(java.awt.event.ActionEvent evt) {
                btnConnexionActionPerformed(evt);
            }
        });

        javax.swing.GroupLayout layout = new javax.swing.GroupLayout(this);
        this.setLayout(layout);
        layout.setHorizontalGroup(
            layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
            .addGroup(layout.createSequentialGroup()
                .addGap(108, 108, 108)
                .addGroup(layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING, false)
                    .addComponent(lblPwd)
                    .addComponent(comboLogin, 0, 153, Short.MAX_VALUE)
                    .addComponent(lblLogin)
                    .addGroup(layout.createSequentialGroup()
                        .addGap(30, 30, 30)
                        .addComponent(btnConnexion))
                    .addComponent(txtPwd))
                .addContainerGap(145, Short.MAX_VALUE))
        );
        layout.setVerticalGroup(
            layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
            .addGroup(layout.createSequentialGroup()
                .addGap(64, 64, 64)
                .addComponent(lblLogin)
                .addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.UNRELATED)
                .addComponent(comboLogin, javax.swing.GroupLayout.PREFERRED_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.PREFERRED_SIZE)
                .addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED)
                .addComponent(lblPwd)
                .addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.UNRELATED)
                .addComponent(txtPwd, javax.swing.GroupLayout.PREFERRED_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.PREFERRED_SIZE)
                .addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED)
                .addComponent(btnConnexion)
                .addContainerGap(83, Short.MAX_VALUE))
        );
    }// </editor-fold>//GEN-END:initComponents

    /**
     * Action suir le bouton connexion
     *
     * @param evt
     */
    private void btnConnexionActionPerformed(java.awt.event.ActionEvent evt) {//GEN-FIRST:event_btnConnexionActionPerformed
        // Recupère le joueur selectionné dans la liste
        Joueur joueur = (Joueur) comboLogin.getSelectedItem();
        // Récupère le mot de passe saisi dans le champs "txtPwd"
        String pwd = new String(txtPwd.getPassword());

        Base base = Base.getInstance();

        if (pwd != null && !pwd.isEmpty()) {
            // Le mot de passe n'est pas null ou vide

            if (joueur.getMotDePasse().equals(pwd)) {
                // Le mot de passe correspond au mot de passe du joueur sélectionné
                base.setJoueurConnecte(joueur);

                // Test si le joueur est l'admin du jeu, si oui on affiche le panel admin
                // sinon on affiche le compte du joueur
                if (joueur.getNom().equals(Base.NOM_ADMINISTRATEUR)) {
                    parent.setContentPane(new PanelAdmin(parent));
                } else {
                    parent.setContentPane(new PanelJeux(parent));
                }

                parent.pack();
            } else {
                // Le mot de passe saisi n'est pas le bon donc on affiche une erreur
                JOptionPane.showMessageDialog(this, "Votre mot de passe est incorrect !", "Erreur", JOptionPane.ERROR_MESSAGE);
            }
        } else {
            //le mot de passe n'a pas été saisi donc on affiche une erreur
            JOptionPane.showMessageDialog(this, "Le mot de passe est absent !", "Erreur", JOptionPane.ERROR_MESSAGE);
        }
    }//GEN-LAST:event_btnConnexionActionPerformed

    /**
     * Ajouter des joueurs dans le combo
     *
     */
    private void initComboJoueur() {
        Base base = Base.getInstance();

        for (Joueur j : base.getLJoueur()) {
            comboLogin.addItem(j);
        }
    }
    // Variables declaration - do not modify//GEN-BEGIN:variables
    private javax.swing.JButton btnConnexion;
    private javax.swing.JComboBox comboLogin;
    private javax.swing.JLabel lblLogin;
    private javax.swing.JLabel lblPwd;
    private javax.swing.JPasswordField txtPwd;
    // End of variables declaration//GEN-END:variables
}
